freeslot("MT_PISTOL", "MT_SHOTGUN", "MT_KARASAWA", "MT_CHAINGUN", "MT_GRENADELAUNCHER", "MT_ROCKETLAUNCHER", "MT_RAILGUN", "MT_AXE", "MT_PLASMAGUN")
freeslot("SPR_PIST", "SPR_TREP", "SPR_KSWP", "SPR_HCNG", "SPR_GLAU", "SPR_RLAU", "SPR_RAIP", "SPR_MLEE", "SPR_PLSP")
freeslot("S_PISTOL", "S_SHOTGUN", "S_KARASAWA", "S_CHAINGUN", "S_GRENADELAUNCHER", "S_ROCKETLAUNCHER", "S_RAILGUN", "S_AXE", "S_PLASMAGUN")
freeslot("S_RESPAWNITEM")
freeslot("sfx_wpnup")

mobjinfo[MT_PISTOL] = {
	//$Name "Pistol (Unused)"
	//$Sprite PISTA0
	//$Category "Rampage Weapon Pickups"
	doomednum = 2030,
	spawnstate = S_PISTOL,
	spawnhealth = 1,
	seestate = S_NULL,
	seesound = sfx_null,
	reactiontime = 1,
	attacksound = sfx_null,
	painstate = S_NULL,
	painchance = 8192,
	painsound = sfx_null,
	meleestate = S_NULL,
	missilestate = S_NULL,
	deathstate = S_RESPAWNITEM,
	xdeathstate = S_NULL,
	deathsound = sfx_wpnup,
	speed = 10,
	radius = 20*FRACUNIT,
	height = 16*FRACUNIT,
	dispoffset = 0,
	mass = 100,
	damage = 0,
	activesound = sfx_None,
	flags = MF_SPECIAL|MF_MONITOR,
	raisestate = S_NULL
}

mobjinfo[MT_SHOTGUN] = {
	//$Name "Shotgun"
	//$Sprite TREPA0
	//$Category "Rampage Weapon Pickups"
	doomednum = 2031,
	spawnstate = S_SHOTGUN,
	spawnhealth = 1,
	seestate = S_NULL,
	seesound = sfx_null,
	reactiontime = 1,
	attacksound = sfx_null,
	painstate = S_NULL,
	painchance = 8192,
	painsound = sfx_null,
	meleestate = S_NULL,
	missilestate = S_NULL,
	deathstate = S_RESPAWNITEM,
	xdeathstate = S_NULL,
	deathsound = sfx_wpnup,
	speed = 10,
	radius = 20*FRACUNIT,
	height = 16*FRACUNIT,
	dispoffset = 0,
	mass = 100,
	damage = 0,
	activesound = sfx_None,
	flags = MF_SPECIAL|MF_MONITOR,
	raisestate = S_NULL
}

mobjinfo[MT_KARASAWA] = {
	//$Name "Karasawa"
	//$Sprite KSWPA0
	//$Category "Rampage Weapon Pickups"
	doomednum = 2032,
	spawnstate = S_KARASAWA,
	spawnhealth = 1,
	seestate = S_NULL,
	seesound = sfx_null,
	reactiontime = 1,
	attacksound = sfx_null,
	painstate = S_NULL,
	painchance = 8192,
	painsound = sfx_null,
	meleestate = S_NULL,
	missilestate = S_NULL,
	deathstate = S_RESPAWNITEM,
	xdeathstate = S_NULL,
	deathsound = sfx_wpnup,
	speed = 10,
	radius = 20*FRACUNIT,
	height = 16*FRACUNIT,
	dispoffset = 0,
	mass = 100,
	damage = 0,
	activesound = sfx_None,
	flags = MF_SPECIAL|MF_MONITOR,
	raisestate = S_NULL
}

mobjinfo[MT_CHAINGUN] = {
	//$Name "Chaingun"
	//$Sprite HCNGC0
	//$Category "Rampage Weapon Pickups"
	doomednum = 2033,
	spawnstate = S_CHAINGUN,
	spawnhealth = 1,
	seestate = S_NULL,
	seesound = sfx_null,
	reactiontime = 1,
	attacksound = sfx_null,
	painstate = S_NULL,
	painchance = 8192,
	painsound = sfx_null,
	meleestate = S_NULL,
	missilestate = S_NULL,
	deathstate = S_RESPAWNITEM,
	xdeathstate = S_NULL,
	deathsound = sfx_wpnup,
	speed = 10,
	radius = 20*FRACUNIT,
	height = 16*FRACUNIT,
	dispoffset = 0,
	mass = 100,
	damage = 0,
	activesound = sfx_None,
	flags = MF_SPECIAL|MF_MONITOR,
	raisestate = S_NULL
}

mobjinfo[MT_GRENADELAUNCHER] = {
	//$Name "Grenade Launcher"
	//$Sprite GLAUA0
	//$Category "Rampage Weapon Pickups"
	doomednum = 2034,
	spawnstate = S_GRENADELAUNCHER,
	spawnhealth = 1,
	seestate = S_NULL,
	seesound = sfx_null,
	reactiontime = 1,
	attacksound = sfx_null,
	painstate = S_NULL,
	painchance = 8192,
	painsound = sfx_null,
	meleestate = S_NULL,
	missilestate = S_NULL,
	deathstate = S_RESPAWNITEM,
	xdeathstate = S_NULL,
	deathsound = sfx_wpnup,
	speed = 10,
	radius = 20*FRACUNIT,
	height = 16*FRACUNIT,
	dispoffset = 0,
	mass = 100,
	damage = 0,
	activesound = sfx_None,
	flags = MF_SPECIAL|MF_MONITOR,
	raisestate = S_NULL
}

mobjinfo[MT_ROCKETLAUNCHER] = {
	//$Name "Rocket Launcher"
	//$Sprite RLAUA0
	//$Category "Rampage Weapon Pickups"
	doomednum = 2035,
	spawnstate = S_ROCKETLAUNCHER,
	spawnhealth = 1,
	seestate = S_NULL,
	seesound = sfx_null,
	reactiontime = 1,
	attacksound = sfx_null,
	painstate = S_NULL,
	painchance = 8192,
	painsound = sfx_null,
	meleestate = S_NULL,
	missilestate = S_NULL,
	deathstate = S_RESPAWNITEM,
	xdeathstate = S_NULL,
	deathsound = sfx_wpnup,
	speed = 10,
	radius = 20*FRACUNIT,
	height = 16*FRACUNIT,
	dispoffset = 0,
	mass = 100,
	damage = 0,
	activesound = sfx_None,
	flags = MF_SPECIAL|MF_MONITOR,
	raisestate = S_NULL
}

mobjinfo[MT_RAILGUN] = {
	//$Name "Railgun"
	//$Sprite RAIPA0
	//$Category "Rampage Weapon Pickups"
	doomednum = 2036,
	spawnstate = S_RAILGUN,
	spawnhealth = 1,
	seestate = S_NULL,
	seesound = sfx_null,
	reactiontime = 1,
	attacksound = sfx_null,
	painstate = S_NULL,
	painchance = 8192,
	painsound = sfx_null,
	meleestate = S_NULL,
	missilestate = S_NULL,
	deathstate = S_RESPAWNITEM,
	xdeathstate = S_NULL,
	deathsound = sfx_wpnup,
	speed = 10,
	radius = 20*FRACUNIT,
	height = 16*FRACUNIT,
	dispoffset = 0,
	mass = 100,
	damage = 0,
	activesound = sfx_None,
	flags = MF_SPECIAL|MF_MONITOR,
	raisestate = S_NULL
}

mobjinfo[MT_AXE] = {
	//$Name "Axe"
	//$Sprite MLEEB0
	//$Category "Rampage Weapon Pickups"
	doomednum = 2037,
	spawnstate = S_AXE,
	spawnhealth = 1,
	seestate = S_NULL,
	seesound = sfx_null,
	reactiontime = 1,
	attacksound = sfx_null,
	painstate = S_NULL,
	painchance = 8192,
	painsound = sfx_null,
	meleestate = S_NULL,
	missilestate = S_NULL,
	deathstate = S_RESPAWNITEM,
	xdeathstate = S_NULL,
	deathsound = sfx_wpnup,
	speed = 10,
	radius = 20*FRACUNIT,
	height = 16*FRACUNIT,
	dispoffset = 0,
	mass = 100,
	damage = 0,
	activesound = sfx_None,
	flags = MF_SPECIAL|MF_MONITOR,
	raisestate = S_NULL
}

mobjinfo[MT_PLASMAGUN] = {
	//$Name "Plasma Rifle (Unused)"
	//$Sprite PLSPA0
	//$Category "Rampage Weapon Pickups"
	doomednum = 2038,
	spawnstate = S_PLASMAGUN,
	spawnhealth = 1,
	seestate = S_NULL,
	seesound = sfx_null,
	reactiontime = 1,
	attacksound = sfx_null,
	painstate = S_NULL,
	painchance = 8192,
	painsound = sfx_null,
	meleestate = S_NULL,
	missilestate = S_NULL,
	deathstate = S_RESPAWNITEM,
	xdeathstate = S_NULL,
	deathsound = sfx_wpnup,
	speed = 10,
	radius = 20*FRACUNIT,
	height = 16*FRACUNIT,
	dispoffset = 0,
	mass = 100,
	damage = 0,
	activesound = sfx_None,
	flags = MF_SPECIAL|MF_MONITOR,
	raisestate = S_NULL
}

mobjinfo[MT_PISTOL].weaponpickup = true
mobjinfo[MT_SHOTGUN].weaponpickup = true
mobjinfo[MT_KARASAWA].weaponpickup = true
mobjinfo[MT_CHAINGUN].weaponpickup = true
mobjinfo[MT_GRENADELAUNCHER].weaponpickup = true
mobjinfo[MT_ROCKETLAUNCHER].weaponpickup = true
mobjinfo[MT_RAILGUN].weaponpickup = true
mobjinfo[MT_AXE].weaponpickup = true
mobjinfo[MT_PLASMAGUN].weaponpickup = true

mobjinfo[MT_PISTOL].weaponslot = 2
mobjinfo[MT_SHOTGUN].weaponslot = 3
mobjinfo[MT_KARASAWA].weaponslot = 6
mobjinfo[MT_CHAINGUN].weaponslot = 4
mobjinfo[MT_GRENADELAUNCHER].weaponslot = 5
mobjinfo[MT_ROCKETLAUNCHER].weaponslot = 5
mobjinfo[MT_RAILGUN].weaponslot = 6
mobjinfo[MT_AXE].weaponslot = 1
mobjinfo[MT_PLASMAGUN].weaponslot = 6

mobjinfo[MT_PISTOL].weaponconstant = RFW.WP_pistol
mobjinfo[MT_SHOTGUN].weaponconstant = RFW.WP_shotgun
mobjinfo[MT_KARASAWA].weaponconstant = RFW.WP_karasawa
mobjinfo[MT_CHAINGUN].weaponconstant = RFW.WP_chaingun
mobjinfo[MT_GRENADELAUNCHER].weaponconstant = RFW.WP_grenadelauncher
mobjinfo[MT_ROCKETLAUNCHER].weaponconstant = RFW.WP_rocketlauncher
mobjinfo[MT_RAILGUN].weaponconstant = RFW.WP_railgun
mobjinfo[MT_AXE].weaponconstant = RFW.WP_axe
mobjinfo[MT_PLASMAGUN].weaponconstant = RFW.WP_plasmarifle

states[S_PISTOL] = {
	sprite = SPR_PIST,
	frame = A,
	tics = -1,
	nextstate = S_PISTOL
}

states[S_SHOTGUN] = {
	sprite = SPR_TREP,
	frame = A, //|FF_PAPERSPRITE
	tics = -1,
	nextstate = S_PISTOL
}

states[S_KARASAWA] = {
	sprite = SPR_KSWP,
	frame = A,
	tics = -1,
	nextstate = S_PISTOL
}

states[S_CHAINGUN] = {
	sprite = SPR_HCNG,
	frame = C,
	tics = -1,
	nextstate = S_PISTOL
}

states[S_GRENADELAUNCHER] = {
	sprite = SPR_GLAU,
	frame = A,
	tics = -1,
	nextstate = S_PISTOL
}

states[S_ROCKETLAUNCHER] = {
	sprite = SPR_RLAU,
	frame = A,
	tics = -1,
	nextstate = S_PISTOL
}

states[S_RAILGUN] = {
	sprite = SPR_RAIP,
	frame = A,
	tics = -1,
	nextstate = S_PISTOL
}

states[S_AXE] = {
	sprite = SPR_MLEE,
	frame = B,
	tics = -1,
	nextstate = S_PISTOL
}

states[S_PLASMAGUN] = {
	sprite = SPR_PLSP,
	frame = A,
	tics = -1,
	nextstate = S_PISTOL
}

states[S_RESPAWNITEM] = {
	sprite = SPR_NULL,
	frame = A,
	tics = -1,
	nextstate = S_NULL
}

//addHook("MobjThinker", function(mo)
//	mo.angle = $ + ANG2
//	P_SpawnGhostMobj(mo)
	/*for i = 1,4 do
		local ghost = P_SpawnGhostMobj(mo)
		ghost.fuse = 2
		local frame = 1
		if i >= 3 then
			frame = 2
		end
		ghost.frame = frame
		ghost.renderflags = $|RF_PAPERSPRITE
		P_SetOrigin(ghost, mo.x + i*cos(mo.angle+ANGLE_90)/3, mo.y + i*sin(mo.angle+ANGLE_90)/3, mo.z)
	end
	for i = 1,4 do
		local ghost = P_SpawnGhostMobj(mo)
		ghost.fuse = 2
		local frame = 1
		if i >= 3 then
			frame = 2
		end
		ghost.frame = frame
		ghost.renderflags = $|RF_PAPERSPRITE
		P_SetOrigin(ghost, mo.x - i*cos(mo.angle+ANGLE_90)/3, mo.y - i*sin(mo.angle+ANGLE_90)/3, mo.z)
	end*/
//end, MT_SHOTGUN)

//addHook("MobjThinker", function(mo) //check if this is a weapon ghost or not
//	mo.frame = $ & ~(FF_TRANS10|FF_TRANS20|FF_TRANS30|FF_TRANS40|FF_TRANS50|FF_TRANS60|FF_TRANS70|FF_TRANS80|FF_TRANS90)
//end, MT_GHOST)

freeslot("MT_HEALTHBONUS", "MT_STIMPACK", "MT_MEDKIT", "MT_ARMOR_GREEN", "MT_ARMOR_BLUE", "MT_ARMOR_RED", "MT_ARMOR_SHARD", "MT_SOULDRIVE", "MT_OVERDRIVE")
freeslot("SPR_MSRD", "SPR_STIM", "SPR_MEDK", "SPR_ASRD", "SPR_ACON", "SPR_MEGA")
freeslot("S_HEALTHBONUS", "S_STIMPACK", "S_MEDKIT", "S_ARMOR_GREEN", "S_ARMOR_BLUE", "S_ARMOR_RED", "S_ARMOR_SHARD", "S_SOULDRIVE", "S_OVERDRIVE")

mobjinfo[MT_HEALTHBONUS] = {
	//$Name "Health Bonus"
	//$Sprite MSRDA0
	//$Category "Rampage Health & Armor"
	doomednum = 2300,
	spawnstate = S_HEALTHBONUS,
	spawnhealth = 1,
	seestate = S_NULL,
	seesound = sfx_null,
	reactiontime = 1,
	attacksound = sfx_null,
	painstate = S_NULL,
	painchance = 8192,
	painsound = sfx_null,
	meleestate = S_NULL,
	missilestate = S_NULL,
	deathstate = S_RESPAWNITEM,
	xdeathstate = S_NULL,
	deathsound = sfx_null,
	speed = 10,
	radius = 20*FRACUNIT,
	height = 16*FRACUNIT,
	dispoffset = 0,
	mass = 100,
	damage = 0,
	activesound = sfx_None,
	flags = MF_SPECIAL|MF_MONITOR,
	raisestate = S_NULL
}

mobjinfo[MT_STIMPACK] = {
	//$Name "Stimpack"
	//$Sprite STIMA0
	//$Category "Rampage Health & Armor"
	doomednum = 2301,
	spawnstate = S_STIMPACK,
	spawnhealth = 1,
	seestate = S_NULL,
	seesound = sfx_null,
	reactiontime = 1,
	attacksound = sfx_null,
	painstate = S_NULL,
	painchance = 8192,
	painsound = sfx_null,
	meleestate = S_NULL,
	missilestate = S_NULL,
	deathstate = S_RESPAWNITEM,
	xdeathstate = S_NULL,
	deathsound = sfx_null,
	speed = 10,
	radius = 20*FRACUNIT,
	height = 16*FRACUNIT,
	dispoffset = 0,
	mass = 100,
	damage = 0,
	activesound = sfx_None,
	flags = MF_SPECIAL|MF_MONITOR,
	raisestate = S_NULL
}

mobjinfo[MT_MEDKIT] = {
	//$Name "Medkit"
	//$Sprite MEDKA0
	//$Category "Rampage Health & Armor"
	doomednum = 2302,
	spawnstate = S_MEDKIT,
	spawnhealth = 1,
	seestate = S_NULL,
	seesound = sfx_null,
	reactiontime = 1,
	attacksound = sfx_null,
	painstate = S_NULL,
	painchance = 8192,
	painsound = sfx_null,
	meleestate = S_NULL,
	missilestate = S_NULL,
	deathstate = S_RESPAWNITEM,
	xdeathstate = S_NULL,
	deathsound = sfx_null,
	speed = 10,
	radius = 20*FRACUNIT,
	height = 16*FRACUNIT,
	dispoffset = 0,
	mass = 100,
	damage = 0,
	activesound = sfx_None,
	flags = MF_SPECIAL|MF_MONITOR,
	raisestate = S_NULL
}

mobjinfo[MT_ARMOR_GREEN] = {
	//$Name "Armor (Green)"
	//$Sprite ACONA0
	//$Category "Rampage Health & Armor"
	doomednum = 2303,
	spawnstate = S_ARMOR_GREEN,
	spawnhealth = 1,
	seestate = S_NULL,
	seesound = sfx_null,
	reactiontime = 1,
	attacksound = sfx_null,
	painstate = S_NULL,
	painchance = 8192,
	painsound = sfx_null,
	meleestate = S_NULL,
	missilestate = S_NULL,
	deathstate = S_RESPAWNITEM,
	xdeathstate = S_NULL,
	deathsound = sfx_null,
	speed = 10,
	radius = 20*FRACUNIT,
	height = 16*FRACUNIT,
	dispoffset = 0,
	mass = 100,
	damage = 0,
	activesound = sfx_None,
	flags = MF_SPECIAL|MF_MONITOR,
	raisestate = S_NULL
}

mobjinfo[MT_ARMOR_BLUE] = {
	//$Name "Armor (Blue)"
	//$Sprite ACONB0
	//$Category "Rampage Health & Armor"
	doomednum = 2304,
	spawnstate = S_ARMOR_BLUE,
	spawnhealth = 1,
	seestate = S_NULL,
	seesound = sfx_null,
	reactiontime = 1,
	attacksound = sfx_null,
	painstate = S_NULL,
	painchance = 8192,
	painsound = sfx_null,
	meleestate = S_NULL,
	missilestate = S_NULL,
	deathstate = S_RESPAWNITEM,
	xdeathstate = S_NULL,
	deathsound = sfx_null,
	speed = 10,
	radius = 20*FRACUNIT,
	height = 16*FRACUNIT,
	dispoffset = 0,
	mass = 100,
	damage = 0,
	activesound = sfx_None,
	flags = MF_SPECIAL|MF_MONITOR,
	raisestate = S_NULL
}

mobjinfo[MT_ARMOR_RED] = {
	//$Name "Armor (Red)"
	//$Sprite ACONC0
	//$Category "Rampage Health & Armor"
	doomednum = 2305,
	spawnstate = S_ARMOR_RED,
	spawnhealth = 1,
	seestate = S_NULL,
	seesound = sfx_null,
	reactiontime = 1,
	attacksound = sfx_null,
	painstate = S_NULL,
	painchance = 8192,
	painsound = sfx_null,
	meleestate = S_NULL,
	missilestate = S_NULL,
	deathstate = S_RESPAWNITEM,
	xdeathstate = S_NULL,
	deathsound = sfx_null,
	speed = 10,
	radius = 20*FRACUNIT,
	height = 16*FRACUNIT,
	dispoffset = 0,
	mass = 100,
	damage = 0,
	activesound = sfx_None,
	flags = MF_SPECIAL|MF_MONITOR,
	raisestate = S_NULL
}

mobjinfo[MT_ARMOR_SHARD] = {
	//$Name "Armor Shard"
	//$Sprite ASRDA0
	//$Category "Rampage Health & Armor"
	doomednum = 2306,
	spawnstate = S_ARMOR_SHARD,
	spawnhealth = 1,
	seestate = S_NULL,
	seesound = sfx_null,
	reactiontime = 1,
	attacksound = sfx_null,
	painstate = S_NULL,
	painchance = 8192,
	painsound = sfx_null,
	meleestate = S_NULL,
	missilestate = S_NULL,
	deathstate = S_RESPAWNITEM,
	xdeathstate = S_NULL,
	deathsound = sfx_null,
	speed = 10,
	radius = 20*FRACUNIT,
	height = 16*FRACUNIT,
	dispoffset = 0,
	mass = 100,
	damage = 0,
	activesound = sfx_None,
	flags = MF_SPECIAL|MF_MONITOR,
	raisestate = S_NULL
} //isarmor, healthgive, armorgive, healthcap, armorcap, protectionvalue

mobjinfo[MT_SOULDRIVE] = {
	//$Name "Soul-Drive"
	//$Sprite MEGAA0
	//$Category "Rampage Health & Armor"
	doomednum = 2307,
	spawnstate = S_SOULDRIVE,
	spawnhealth = 1,
	seestate = S_NULL,
	seesound = sfx_null,
	reactiontime = 1,
	attacksound = sfx_null,
	painstate = S_NULL,
	painchance = 8192,
	painsound = sfx_null,
	meleestate = S_NULL,
	missilestate = S_NULL,
	deathstate = S_RESPAWNITEM,
	xdeathstate = S_NULL,
	deathsound = sfx_null,
	speed = 10,
	radius = 20*FRACUNIT,
	height = 16*FRACUNIT,
	dispoffset = 0,
	mass = 100,
	damage = 0,
	activesound = sfx_None,
	flags = MF_SPECIAL|MF_MONITOR|MF_NOGRAVITY,
	raisestate = S_NULL
}

mobjinfo[MT_OVERDRIVE] = {
	//$Name "Over-Drive"
	//$Sprite MEGAE0
	//$Category "Rampage Health & Armor"
	doomednum = 2308,
	spawnstate = S_OVERDRIVE,
	spawnhealth = 1,
	seestate = S_NULL,
	seesound = sfx_null,
	reactiontime = 1,
	attacksound = sfx_null,
	painstate = S_NULL,
	painchance = 8192,
	painsound = sfx_null,
	meleestate = S_NULL,
	missilestate = S_NULL,
	deathstate = S_RESPAWNITEM,
	xdeathstate = S_NULL,
	deathsound = sfx_null,
	speed = 10,
	radius = 20*FRACUNIT,
	height = 16*FRACUNIT,
	dispoffset = 0,
	mass = 100,
	damage = 0,
	activesound = sfx_None,
	flags = MF_SPECIAL|MF_MONITOR|MF_NOGRAVITY,
	raisestate = S_NULL
}

mobjinfo[MT_HEALTHBONUS].healthpickup = true
mobjinfo[MT_STIMPACK].healthpickup = true
mobjinfo[MT_MEDKIT].healthpickup = true
mobjinfo[MT_ARMOR_GREEN].armorpickup = true
mobjinfo[MT_ARMOR_BLUE].armorpickup = true
mobjinfo[MT_ARMOR_RED].armorpickup = true
mobjinfo[MT_ARMOR_SHARD].armorpickup = true
mobjinfo[MT_SOULDRIVE].healthpickup = true
mobjinfo[MT_OVERDRIVE].healthpickup = true
mobjinfo[MT_OVERDRIVE].armorpickup = true

mobjinfo[MT_HEALTHBONUS].healthgive = 1
mobjinfo[MT_STIMPACK].healthgive = 10
mobjinfo[MT_MEDKIT].healthgive = 25
mobjinfo[MT_ARMOR_GREEN].armorgive = 100
mobjinfo[MT_ARMOR_BLUE].armorgive = 200
mobjinfo[MT_ARMOR_RED].armorgive = 200
mobjinfo[MT_ARMOR_SHARD].armorgive = 1
mobjinfo[MT_SOULDRIVE].healthgive = 100
mobjinfo[MT_OVERDRIVE].healthgive = 200
mobjinfo[MT_OVERDRIVE].armorgive = 200

mobjinfo[MT_HEALTHBONUS].healthcap = 0
mobjinfo[MT_STIMPACK].healthcap = 100
mobjinfo[MT_MEDKIT].healthcap = 100
mobjinfo[MT_ARMOR_GREEN].armorcap = 100
mobjinfo[MT_ARMOR_BLUE].armorcap = 200
mobjinfo[MT_ARMOR_RED].armorcap = 200
mobjinfo[MT_ARMOR_SHARD].armorcap = 0
mobjinfo[MT_SOULDRIVE].healthcap = 0
mobjinfo[MT_OVERDRIVE].healthcap = 0
mobjinfo[MT_OVERDRIVE].armorcap = 0

mobjinfo[MT_ARMOR_GREEN].protectionvalue = 33
mobjinfo[MT_ARMOR_BLUE].protectionvalue = 50
mobjinfo[MT_ARMOR_RED].protectionvalue = 75
mobjinfo[MT_ARMOR_SHARD].protectionvalue = 0
mobjinfo[MT_OVERDRIVE].protectionvalue = 50

states[S_HEALTHBONUS] = {
	sprite = SPR_MSRD,
	frame = A,
	tics = -1,
	nextstate = S_HEALTHBONUS
}

states[S_STIMPACK] = {
	sprite = SPR_STIM,
	frame = A,
	tics = -1,
	nextstate = S_STIMPACK
}

states[S_MEDKIT] = {
	sprite = SPR_MEDK,
	frame = A,
	tics = -1,
	nextstate = S_MEDKIT
}

states[S_ARMOR_GREEN] = {
	sprite = SPR_ACON,
	frame = A,
	tics = -1,
	nextstate = S_ARMOR_GREEN
}

states[S_ARMOR_BLUE] = {
	sprite = SPR_ACON,
	frame = B,
	tics = -1,
	nextstate = S_ARMOR_BLUE
}

states[S_ARMOR_RED] = {
	sprite = SPR_ACON,
	frame = C,
	tics = -1,
	nextstate = S_ARMOR_RED
}

states[S_ARMOR_SHARD] = {
	sprite = SPR_ASRD,
	frame = A,
	tics = -1,
	nextstate = S_ARMOR_SHARD
}

states[S_SOULDRIVE] = {
	sprite = SPR_MEGA,
	frame = A|FF_ANIMATE,
	var1 = 3,
	var2 = 4,
	tics = -1,
	nextstate = S_SOULDRIVE
}

states[S_OVERDRIVE] = {
	sprite = SPR_MEGA,
	frame = E|FF_ANIMATE,
	var1 = 3,
	var2 = 4,
	tics = -1,
	nextstate = S_OVERDRIVE
}

freeslot("MT_BULLETS", "MT_BULLET_BOX", "MT_SHELLS", "MT_SHELL_BOX", "MT_ROCKET", "MT_ROCKET_BOX", "MT_PLASMA", "MT_PLASMA_BOX")
freeslot("SPR_AMOK", "SPR_AMOB", "SPR_SHLL", "SPR_SHLK", "SPR_RKP1", "SPR_RCKB", "SPR_KWAS", "SPR_KWAL")
freeslot("S_BULLETS", "S_BULLET_BOX", "S_SHELLS", "S_SHELL_BOX", "S_ROCKET", "S_ROCKET_BOX", "S_PLASMA", "S_PLASMA_BOX")

mobjinfo[MT_BULLETS] = {
	//$Name "'Clip' (Magazine)"
	//$Sprite AMOKA0
	//$Category "Rampage Ammo Pickups"
	doomednum = 2400,
	spawnstate = S_BULLETS,
	spawnhealth = 1,
	seestate = S_NULL,
	seesound = sfx_null,
	reactiontime = 1,
	attacksound = sfx_null,
	painstate = S_NULL,
	painchance = 8192,
	painsound = sfx_null,
	meleestate = S_NULL,
	missilestate = S_NULL,
	deathstate = S_RESPAWNITEM,
	xdeathstate = S_NULL,
	deathsound = sfx_null,
	speed = 10,
	radius = 20*FRACUNIT,
	height = 16*FRACUNIT,
	dispoffset = 0,
	mass = 100,
	damage = 0,
	activesound = sfx_None,
	flags = MF_SPECIAL|MF_MONITOR,
	raisestate = S_NULL
}

mobjinfo[MT_BULLET_BOX] = {
	//$Name "Bullet Box"
	//$Sprite AMOBA0
	//$Category "Rampage Ammo Pickups"
	doomednum = 2401,
	spawnstate = S_BULLET_BOX,
	spawnhealth = 1,
	seestate = S_NULL,
	seesound = sfx_null,
	reactiontime = 1,
	attacksound = sfx_null,
	painstate = S_NULL,
	painchance = 8192,
	painsound = sfx_null,
	meleestate = S_NULL,
	missilestate = S_NULL,
	deathstate = S_RESPAWNITEM,
	xdeathstate = S_NULL,
	deathsound = sfx_null,
	speed = 10,
	radius = 20*FRACUNIT,
	height = 16*FRACUNIT,
	dispoffset = 0,
	mass = 100,
	damage = 0,
	activesound = sfx_None,
	flags = MF_SPECIAL|MF_MONITOR,
	raisestate = S_NULL
}

mobjinfo[MT_SHELLS] = {
	//$Name "Shells"
	//$Sprite SHLLA0
	//$Category "Rampage Ammo Pickups"
	doomednum = 2402,
	spawnstate = S_SHELLS,
	spawnhealth = 1,
	seestate = S_NULL,
	seesound = sfx_null,
	reactiontime = 1,
	attacksound = sfx_null,
	painstate = S_NULL,
	painchance = 8192,
	painsound = sfx_null,
	meleestate = S_NULL,
	missilestate = S_NULL,
	deathstate = S_RESPAWNITEM,
	xdeathstate = S_NULL,
	deathsound = sfx_null,
	speed = 10,
	radius = 20*FRACUNIT,
	height = 16*FRACUNIT,
	dispoffset = 0,
	mass = 100,
	damage = 0,
	activesound = sfx_None,
	flags = MF_SPECIAL|MF_MONITOR,
	raisestate = S_NULL
}

mobjinfo[MT_SHELL_BOX] = {
	//$Name "Shell Box"
	//$Sprite SHLKA0
	//$Category "Rampage Ammo Pickups"
	doomednum = 2403,
	spawnstate = S_SHELL_BOX,
	spawnhealth = 1,
	seestate = S_NULL,
	seesound = sfx_null,
	reactiontime = 1,
	attacksound = sfx_null,
	painstate = S_NULL,
	painchance = 8192,
	painsound = sfx_null,
	meleestate = S_NULL,
	missilestate = S_NULL,
	deathstate = S_RESPAWNITEM,
	xdeathstate = S_NULL,
	deathsound = sfx_null,
	speed = 10,
	radius = 20*FRACUNIT,
	height = 16*FRACUNIT,
	dispoffset = 0,
	mass = 100,
	damage = 0,
	activesound = sfx_None,
	flags = MF_SPECIAL|MF_MONITOR,
	raisestate = S_NULL
}

mobjinfo[MT_ROCKET] = {
	//$Name "Rocket"
	//$Sprite RKP1A0
	//$Category "Rampage Ammo Pickups"
	doomednum = 2404,
	spawnstate = S_ROCKET,
	spawnhealth = 1,
	seestate = S_NULL,
	seesound = sfx_null,
	reactiontime = 1,
	attacksound = sfx_null,
	painstate = S_NULL,
	painchance = 8192,
	painsound = sfx_null,
	meleestate = S_NULL,
	missilestate = S_NULL,
	deathstate = S_RESPAWNITEM,
	xdeathstate = S_NULL,
	deathsound = sfx_null,
	speed = 10,
	radius = 20*FRACUNIT,
	height = 16*FRACUNIT,
	dispoffset = 0,
	mass = 100,
	damage = 0,
	activesound = sfx_None,
	flags = MF_SPECIAL|MF_MONITOR,
	raisestate = S_NULL
}

mobjinfo[MT_ROCKET_BOX] = {
	//$Name "Rocket Box"
	//$Sprite RCKBA0
	//$Category "Rampage Ammo Pickups"
	doomednum = 2405,
	spawnstate = S_ROCKET_BOX,
	spawnhealth = 1,
	seestate = S_NULL,
	seesound = sfx_null,
	reactiontime = 1,
	attacksound = sfx_null,
	painstate = S_NULL,
	painchance = 8192,
	painsound = sfx_null,
	meleestate = S_NULL,
	missilestate = S_NULL,
	deathstate = S_RESPAWNITEM,
	xdeathstate = S_NULL,
	deathsound = sfx_null,
	speed = 10,
	radius = 20*FRACUNIT,
	height = 16*FRACUNIT,
	dispoffset = 0,
	mass = 100,
	damage = 0,
	activesound = sfx_None,
	flags = MF_SPECIAL|MF_MONITOR,
	raisestate = S_NULL
}

mobjinfo[MT_PLASMA] = {
	//$Name "Plasma Cell"
	//$Sprite KWASA0
	//$Category "Rampage Ammo Pickups"
	doomednum = 2406,
	spawnstate = S_PLASMA,
	spawnhealth = 1,
	seestate = S_NULL,
	seesound = sfx_null,
	reactiontime = 1,
	attacksound = sfx_null,
	painstate = S_NULL,
	painchance = 8192,
	painsound = sfx_null,
	meleestate = S_NULL,
	missilestate = S_NULL,
	deathstate = S_RESPAWNITEM,
	xdeathstate = S_NULL,
	deathsound = sfx_null,
	speed = 10,
	radius = 20*FRACUNIT,
	height = 16*FRACUNIT,
	dispoffset = 0,
	mass = 100,
	damage = 0,
	activesound = sfx_None,
	flags = MF_SPECIAL|MF_MONITOR,
	raisestate = S_NULL
}

mobjinfo[MT_PLASMA_BOX] = {
	//$Name "Plasma Battery"
	//$Sprite KWALA0
	//$Category "Rampage Ammo Pickups"
	doomednum = 2407,
	spawnstate = S_PLASMA_BOX,
	spawnhealth = 1,
	seestate = S_NULL,
	seesound = sfx_null,
	reactiontime = 1,
	attacksound = sfx_null,
	painstate = S_NULL,
	painchance = 8192,
	painsound = sfx_null,
	meleestate = S_NULL,
	missilestate = S_NULL,
	deathstate = S_RESPAWNITEM,
	xdeathstate = S_NULL,
	deathsound = sfx_null,
	speed = 10,
	radius = 20*FRACUNIT,
	height = 16*FRACUNIT,
	dispoffset = 0,
	mass = 100,
	damage = 0,
	activesound = sfx_None,
	flags = MF_SPECIAL|MF_MONITOR,
	raisestate = S_NULL
}

mobjinfo[MT_BULLETS].ammopickup = true
mobjinfo[MT_BULLET_BOX].ammopickup = true
mobjinfo[MT_SHELLS].ammopickup = true
mobjinfo[MT_SHELL_BOX].ammopickup = true
mobjinfo[MT_ROCKET].ammopickup = true
mobjinfo[MT_ROCKET_BOX].ammopickup = true
mobjinfo[MT_PLASMA].ammopickup = true
mobjinfo[MT_PLASMA_BOX].ammopickup = true

mobjinfo[MT_BULLETS].ammotype = 1
mobjinfo[MT_BULLET_BOX].ammotype = 1
mobjinfo[MT_SHELLS].ammotype = 2
mobjinfo[MT_SHELL_BOX].ammotype = 2
mobjinfo[MT_ROCKET].ammotype = 3
mobjinfo[MT_ROCKET_BOX].ammotype = 3
mobjinfo[MT_PLASMA].ammotype = 4
mobjinfo[MT_PLASMA_BOX].ammotype = 4

mobjinfo[MT_BULLETS].ammoamount = 10
mobjinfo[MT_BULLET_BOX].ammoamount = 50
mobjinfo[MT_SHELLS].ammoamount = 4
mobjinfo[MT_SHELL_BOX].ammoamount = 20
mobjinfo[MT_ROCKET].ammoamount = 1
mobjinfo[MT_ROCKET_BOX].ammoamount = 5
mobjinfo[MT_PLASMA].ammoamount = 20
mobjinfo[MT_PLASMA_BOX].ammoamount = 100

states[S_BULLETS] = {
	sprite = SPR_AMOK,
	frame = A,
	tics = -1,
	nextstate = S_BULLETS
}

states[S_BULLET_BOX] = {
	sprite = SPR_AMOB,
	frame = A,
	tics = -1,
	nextstate = S_BULLET_BOX
}

states[S_SHELLS] = {
	sprite = SPR_SHLL,
	frame = A,
	tics = -1,
	nextstate = S_SHELLS
}

states[S_SHELL_BOX] = {
	sprite = SPR_SHLK,
	frame = A,
	tics = -1,
	nextstate = S_SHELL_BOX
}

states[S_ROCKET] = {
	sprite = SPR_RKP1,
	frame = A,
	tics = -1,
	nextstate = S_ROCKET
}

states[S_ROCKET_BOX] = {
	sprite = SPR_RCKB,
	frame = A,
	tics = -1,
	nextstate = S_ROCKET_BOX
}

states[S_PLASMA] = {
	sprite = SPR_KWAS,
	frame = A|FF_ANIMATE|FF_FULLBRIGHT,
	var1 = 3,
	var2 = 3,
	tics = -1,
	nextstate = S_PLASMA
}

states[S_PLASMA_BOX] = {
	sprite = SPR_KWAL,
	frame = A|FF_ANIMATE|FF_FULLBRIGHT,
	var1 = 3,
	var2 = 3,
	tics = -1,
	nextstate = S_PLASMA_BOX
}

//powerups

freeslot("MT_TURBOSPHERE")
freeslot("S_TURBOSPHERE")
freeslot("sfx_hston")

mobjinfo[MT_TURBOSPHERE] = {
	//$Name "Turbo-Sphere"
	//$Sprite MEGAI0
	//$Category "Rampage Power-Ups"
	doomednum = 2309,
	spawnstate = S_TURBOSPHERE,
	spawnhealth = 1,
	seestate = S_NULL,
	seesound = sfx_null,
	reactiontime = 1,
	attacksound = sfx_null,
	painstate = S_NULL,
	painchance = 8192,
	painsound = sfx_null,
	meleestate = S_NULL,
	missilestate = S_NULL,
	deathstate = S_RESPAWNITEM,
	xdeathstate = S_NULL,
	deathsound = sfx_null,
	speed = 10,
	radius = 20*FRACUNIT,
	height = 16*FRACUNIT,
	dispoffset = 0,
	mass = 100,
	damage = 0,
	activesound = sfx_None,
	flags = MF_SPECIAL|MF_MONITOR|MF_NOGRAVITY,
	raisestate = S_NULL
}

states[S_TURBOSPHERE] = {
	sprite = SPR_MEGA,
	frame = I|FF_ANIMATE,
	var1 = 3,
	var2 = 4,
	tics = -1,
	nextstate = S_TURBOSPHERE
}

addHook("TouchSpecial", function(s, mo)
	S_StartSound(mo, sfx_hston)
	mo.hastepowerup = 20 * TICRATE + 1
	return false
end, MT_TURBOSPHERE)

freeslot("MT_INVULNSPHERE")
freeslot("S_INVULNSPHERE")
freeslot("sfx_invon")

mobjinfo[MT_INVULNSPHERE] = {
	//$Name "Invuln-Sphere"
	//$Sprite MEGAM0
	//$Category "Rampage Power-Ups"
	doomednum = 2310,
	spawnstate = S_INVULNSPHERE,
	spawnhealth = 1,
	seestate = S_NULL,
	seesound = sfx_null,
	reactiontime = 1,
	attacksound = sfx_null,
	painstate = S_NULL,
	painchance = 8192,
	painsound = sfx_null,
	meleestate = S_NULL,
	missilestate = S_NULL,
	deathstate = S_RESPAWNITEM,
	xdeathstate = S_NULL,
	deathsound = sfx_null,
	speed = 10,
	radius = 20*FRACUNIT,
	height = 16*FRACUNIT,
	dispoffset = 0,
	mass = 100,
	damage = 0,
	activesound = sfx_None,
	flags = MF_SPECIAL|MF_MONITOR|MF_NOGRAVITY,
	raisestate = S_NULL
}

states[S_INVULNSPHERE] = {
	sprite = SPR_MEGA,
	frame = M|FF_ANIMATE,
	var1 = 3,
	var2 = 4,
	tics = -1,
	nextstate = S_INVULNSPHERE
}

addHook("TouchSpecial", function(s, mo)
	S_StartSound(mo, sfx_invon)
	mo.godpowerup = 20 * TICRATE + 1
	return false
end, MT_INVULNSPHERE)